package com.teen9g.infoplatformserver.controller;

import com.github.pagehelper.PageInfo;
import com.teen9g.PageQueryDTO.PlaygroundPageQueryDTO;
import com.teen9g.dto.PlaygroundDTO;
import com.teen9g.entity.Playground;
import com.teen9g.infoplatformserver.service.PlaygroundService;
import com.teen9g.result.Result;
import com.teen9g.userVO.PlaygroundUserVO;
import com.teen9g.vo.PlaygroundVO;
import lombok.extern.slf4j.Slf4j;
import org.codehaus.jettison.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@CrossOrigin
@RequestMapping("/playground")
public class PlaygroundController {

    @Autowired
    private PlaygroundService playgroundService;

    /**
     * 运动场分页查询
     *
     * @param playgroundPageQueryDTO 查询条件
     * @return 分页数据
     */
    @GetMapping("/page")
    public Result<PageInfo<PlaygroundVO>> page(PlaygroundPageQueryDTO playgroundPageQueryDTO) {
        log.info("获取运动场分页数据");
        PageInfo<PlaygroundVO> result = playgroundService.page(playgroundPageQueryDTO);
        return Result.success(result);
    }

    @GetMapping("/page/user")
    public Result<PageInfo<PlaygroundUserVO>> pageUser(PlaygroundPageQueryDTO playgroundPageQueryDTO) {
        log.info("个人中心页面获取用户端运动场分页数据");
        PageInfo<PlaygroundUserVO> result = playgroundService.pageUser(playgroundPageQueryDTO);
        return Result.success(result);
    }

    /**
     * 根据id获取运动场条目
     * @param id 运动场条目id
     * @return 运动场条目
     */
    @GetMapping("/get/{id}")
    public Result<Playground> getById(@PathVariable Integer id) {
        log.info("获取id为{}的运动场条目", id);
        Playground result = playgroundService.getById(id);
        return Result.success(result);
    }

    @PostMapping("/addView/{id}")
    public Result<String> addView(@PathVariable Integer id) {
        log.info("增加id为{}的运动场条目浏览量", id);
        playgroundService.addView(id);
        return Result.success();
    }

    /**
     * 添加运动场条目
     * @param playgroundDTO 运动场条目
     * @return 添加结果
     */
    @PostMapping("/add")
    public Result<String> add(@RequestBody PlaygroundDTO playgroundDTO) {
        log.info("添加运动场条目");
        String result = playgroundService.add(playgroundDTO);
        return Result.success(result);
    }

    /**
     * 更新运动场条目
     * @param playgroundDTO 运动场条目
     * @param id 运动场条目id
     * @return 更新结果
     */
    @PutMapping("/update/{id}")
    public Result<String> update
            (@PathVariable Integer id, @RequestBody PlaygroundDTO playgroundDTO)
            throws JSONException {
        log.info("更新id为{}的运动场条目", id);
        String result = playgroundService.update(playgroundDTO, id);
        return Result.success(result);
    }

    /**
     * 根据id删除运动场条目
     * @param id 运动场条目id
     * @return 删除结果
     */
    @DeleteMapping("/delete/{id}")
    public Result<String> delete(@PathVariable Integer id) {
        log.info("删除id为{}的运动场条目", id);
        String result = playgroundService.delete(id);
        return Result.success(result);
    }
}
